home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
STUTTGART
/
UNIXTOOL
/
GNU
/
TILEFORTH
/
TILE
/
TILE~
/
!Tile
/
test
/
hanoi
< prev
next >
Wrap
Text File
|
1992-04-20
|
1KB
|
61 lines
.( Loading Towers of Hanoi benchmark...) cr
\ The classical Towers of Hanoi benchmark
\
\ From W.P. Salman, O. Tisserand and B. Toulout, FORTH, Macmillan
\ pp. 120-121
variable moves
: copy ( x y z -- x y z x y z)
>r 2dup r@ -rot r>
;
: dispose ( x y z -- )
2drop drop
;
: edit ( d a n -- d a n)
copy drop swap ." From: " . ." to: " . cr
;
: prepare-call ( d a n -- d a n d i n-1)
copy -rot over + 6 swap - rot 1-
;
: prepare-return ( d a n -- d a n i a n-1)
copy swap rot over + 6 swap - swap rot 1-
;
: verify-hanoi ( departure arrival number -- )
(event) process
dup
if prepare-call recurse
edit
prepare-return recurse
then
dispose
;
: verify-towers-of-hanoi ( -- )
1 3 4 verify-hanoi
;
: hanoi ( departure arrival number -- )
(event) process
dup
if prepare-call recurse
1 moves +!
prepare-return recurse
then
dispose
;
: towers-of-hanoi ( -- )
0 moves !
1 3 14 hanoi
moves @ 16383 = not abort" towers-of-hanoi: wrong result"
;
forth only